﻿/**
 * 表单包裹器，应对表单嵌套表单的场景。
 */
Ext.define('Happy.form.Wrapper', {
    extend: 'Ext.panel.Panel',
    alias: 'widget.happy-form-wrapper',
    mixins: {
        'sceneable': 'Happy.mixin.Sceneable'
    },

    /**
     * @cfg 重写 ExtJs。
     */
    buttonAlign: 'center',
    /**
     * @cfg 重写 ExtJs。
     */
    layout: 'fit',

    constructor: function (config) {
        var me = this;

        if (config && config.scene) {
            me.initScene(config.scene);
            delete config.scene;
        }

        me.callParent(arguments);
    },

    /**
     * 重写 ExtJs。
     * 
     * @protected
     */
    initComponent: function () {
        var me = this;

        me.configComponent();

        me.callParent(arguments);

        me.configRelatedItems();
    },

    /**
     * 配置组件。
     * 
     * @protected
     */
    configComponent: function () {
        var me = this;

        me.configItems();
        me.configButtons();
    },

    /**
     * 配置表单。
     * 
     * @protected
     */
    configItems: Ext.emptyFn,

    /**
     * 配置按钮。
     * 
     * @protected
     */
    configButtons: Ext.emptyFn,

    /**
     * 配置和当前表单相关的 items，如：订单的订单项列表。
     *
     * @protected
     * @abstract
     */
    configRelatedItems: Ext.emptyFn,

    /**
     * 返回 Form。
     *
     */
    getFormPanel: function () {
        var me = this;

        return me.down('form');
    }
});